package com.ftg.learn.lesson3;

/**
 * 学习for循环结构
 *
 * @author kangjx
 * @version 1.0
 * @date 2023/6/5 下午3:35
 */
public class LearnLoop01 {

    public static void main(String[] args) {
//        * * * *
//        System.out.print("* ");
//        System.out.print("* ");
//        System.out.print("* ");
//        System.out.print("* ");

        //循环 : 让相同的或者有规率的代码重复执行多次
//        int max = 10;
//        int min = 1;
//        int add = 1;

//        for(起始;条件;增量){
//            codeblock
//        }
        for (int i = 1; i <= 10; i++) {
            System.out.print("* ");
        }

        System.out.println("====>二");
        for (int i = 1; i <= 10; i += 2) {
            System.out.print("* ");
        }

        // 1-10 累加和
        int sum = 0;
        for (int i = 0; i < 10; i++) {
            sum += (i + 1);
        }
        System.out.println(sum);

        System.out.println("分治 分治，字面上的解释是“分而治之”，就是把一个复杂的问题分成两个或更多的相同或相似的子问题，" +
                "再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解，原问题的解即子问题的解的合并。");

        System.out.println("双指针......");
        int sum1 = 0;
        for (int i = 1, max = 11; i <= max; i++, max--) {
            sum1 += i == max ? i : (i + max);
        }
        System.out.println(sum1);

        System.out.println("四指针20+....");
        int sum2 = 0;
        for (int left = 1, max = 20, leftmax = (max >> 1), right = (max >> 1) + 1; left <= leftmax && right <= max; left++, leftmax--, right++, max--) {
            sum2 += (left + leftmax) + (right + max);
        }
        System.out.println(sum2);



    }

}
